Internet Small Computer System Interface (iSCSI) is an SCSI transport protocol for mapping of block-orientated storage data over TCP/IP (Transmission Control Protocol/Internet Protocol) networks. iSCSI builds on two widely used technologies—SCSI commands for storage and IP protocols for networking. By carrying SCSI commands over IP networks, iSCSI is used to facilitate data transfers over intranets and to manage storage over long distances. The iSCSI protocol enables universal access to storage devices and storage area networks (SANs). These networks may be dedicated networks or may be shared with traditional Ethernet applications.
A conventional iSCSI network entity often includes a single controller. When the entire controller fails or when all physical links to the single controller are lost, these types of errors may be catastrophic to the iSCSI layer running on the single controller and may not be handled by any iSCSI error recovery mechanisms. There are currently no iSCSI products on the market with multiple controller capabilities in their network entities. However, when these types of products become available, a method and apparatus may be needed to integrate these types of products with existing or legacy mode SCSI fail-over drivers.
A mechanism for supporting legacy SCSI fail-over drivers is to write the iSCSI initiator driver to support the legacy SCSI driver. However, this mechanism may require the initiator driver to be aware of the target network device structure. It may also be required to open sessions to multiple iSCSI targets on the network entity to create the redundant paths to the controller needed by the legacy SCSI fail-over driver.
There may exist other fail-over mechanisms which may totally eliminate the need to support the legacy SCSI fail-over drivers. However, these mechanisms may require active monitoring of the network by either a target or initiator driver. These mechanisms may also require active monitoring of the operational state of controllers in a multiple controller network entity to detect controller failures. When a failure of any type is detected by a controller, the targets and storage resources on the failed or inaccessible controller may need to be moved to a controller that may still be accessed by an initiator. In this case, the sessions previously established between the initiator and the target may need to be dropped using some mechanism such as informing an iSNS server of the loss of the target and re-established. Re-establishing the session may require a new discovery sequence by the initiator and the establishment of new security associations. Although these mechanisms may be completely implemented by the iSCSI target network entity using existing iSCSI protocol features and active monitoring, the mechanisms may be inefficient compared to fail-over implemented by a legacy SCSI fail-over driver. The time to detect the failure and re-establish the SCSI I_T nexus may run into multiple seconds, possibly even multiple 10's of seconds if the initiator and target are using secure sessions.
Thus, it would be desirable to provide a method for supporting legacy mode fail-over drivers with an iSCSI network entity including multiple redundant controllers, by which the initiator may not need any knowledge of the redundant controller organization of the target network entity.